package com.recharge.core.entity;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.*;

import java.io.Serializable;
import java.util.Date;

import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * <p>
 * 交易信息表
 * </p>
 *
 * @author Reagan
 * @since 2020-08-21
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("business_transaction")
public class TransactionEntity implements Serializable {

    private static final long serialVersionUID=1L;

    @TableId(type = IdType.ASSIGN_UUID)
    private String id;

    /**
     * 交易号
     */
    @TableField("transaction_no")
    private String transactionNo;

    /**
     * 根据类型可以是订单号存款单号退款单号
     */
    @TableField("identifier_no")
    private String identifierNo;

    /**
     * 下游商家号
     */
    @TableField("merchant_no")
    private String merchantNo;

    /**
     * 下游商家名称
     */
    @TableField(exist = false)
    private String merchantName;

    /**
     * 商家账户号（资金相关）
     */
    @TableField("account_no")
    private String accountNo;


    /**
     * 1.存款 2.提现 3.商品订单 4.退款
     */
    @TableField("type")
    private Integer type;

    /**
     * 商品名称如果是订单
     */
    @TableField("goods_name")
    private String goodsName;

    /**
     * 金额
     */
    @TableField("amount")
    private Long amount;

    /**
     * 1.收入 2.支出
     */
    @TableField("amount_type")
    private Integer amountType;

    /**
     * 操作前金额
     */
    @TableField("before_balance")
    private Long beforeBalance;

    /**
     * 操作后金额
     */
    @TableField("balance")
    private Long balance;

    /**
     * 备注
     */
    @TableField("explain_text")
    private String explainText;

    /**
     * 交易开始时间
     */
    @TableField("begin_date")
    private Date beginDate;

    /**
     * 交易结束时间
     */
    @TableField("end_date")
    private Date endDate;

    /**
     * 0.成功1.失败
     */
    @TableField("status")
    private Integer status;

    /**
     * -1 删除 1 有效    
     */
    @TableField("is_delete")
    private Integer isDelete;

    /**
     * 节点名称
     */
    @TableField(updateStrategy = FieldStrategy.NEVER)
    private Integer nodeName;

}
